home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2005 February / Gamestar_70_2005-02_dvd.iso / DVDStar / Editace / TS2HomeCrafterPlus_Install.exe / HCData\Res\UKConfig\Graphics Rules.sgr < prev    next >
Text File  |  2004-12-12  |  27KB  |  864 lines

  1. #############################################################################
  2. #
  3. # Logging settings
  4. #
  5.  
  6. set logGroup           "ConfigurationManager"
  7. set logLevelWarning    warning
  8. set logLevelInfo       info
  9. set logLevelDebug      debug
  10.  
  11. log $logGroup $logLevelInfo "Parsing configuration script"
  12.  
  13.  
  14. #############################################################################
  15. #
  16. # Constants
  17. #
  18.  
  19. seti Off 0
  20. seti On  1
  21.  
  22. seti Low    1
  23. seti Medium 2
  24. seti High   3
  25.  
  26. seti memoryLevelHigh    512
  27. seti memoryLevelMedium  256
  28. seti memoryLevelLow     128
  29. seti memoryLevelUnknown 0
  30.  
  31. seti cpuLevelHigh        1800
  32. seti cpuLevelMedium      1200
  33. seti cpuLevelLow         600
  34. seti cpuLevelUnsupported 0
  35.  
  36.  
  37. #############################################################################
  38. #
  39. # Identify gfx device
  40. #
  41.  
  42. # set some config variables based on a card table and vendor specific rules
  43. # sets isCardFound, cardVendor, and cardName
  44. include "Video Cards.sgr"
  45.  
  46. # Fallback on the card name text supplied by the card itself.
  47. # Assumes that at least the cardVendor has been matched, since
  48. # vendor name is not contained in some vendor card names.
  49. # Note that specific vendors are overridden to a default card.
  50. #  For ATI    -> Radeon 9800 Pro
  51. #  For NVIDIA -> NVIDIA 4800 TI SE
  52. if (not $isCardFound)
  53.    set cardName $cardNameText
  54. endif
  55.  
  56.  
  57.  
  58. #############################################################################
  59. #
  60. # Configuration override controlled by command line option -cardConfig.
  61. #
  62. if (varExists(cardConfig))
  63.    # test unsupported cards using sw rendering
  64.    if ($cardConfig = 1)
  65.       log $logGroup $logLevelInfo "Testing with all devices unsupported."
  66.       set  cardVendor    TestingAllUnsupported
  67.       set  cardName      TestingAllUnsupported
  68.  
  69.    elseif (($cardConfig = 2) and ($deviceNumber = 0))
  70.       log $logGroup $logLevelInfo "Testing with the first device unsupported."
  71.       set  cardVendor    TestingFirstUnsupported
  72.       set  cardName      TestingFirstUnsupported
  73.  
  74.    elseif (($cardConfig = 3) and ($deviceNumber != 0))
  75.       log $logGroup $logLevelInfo "Testing with the all devices except first unsupported."
  76.       set  cardVendor    TestingAllButFirstUnsupported
  77.       set  cardName      TestingAllButFirstUnsupported
  78.  
  79.    elseif (($cardConfig = 100) and ($deviceNumber = 0))
  80.       log $logGroup $logLevelInfo "Testing first device as swvp only part."
  81.       boolProp forceSoftwareVP true
  82.    endif
  83. endif
  84.  
  85.  
  86.  
  87. #############################################################################
  88. #
  89. # Determine if gfx device is supported, force software rendering if not
  90. #
  91.  
  92. setb useSoftwareRasterizer false
  93.  
  94. if (match("${cardVendor}", "ATI"))
  95.    if (match("${cardName}", "*Mach*") or match("${cardName}", "*Rage*"))
  96.       setb useSoftwareRasterizer true
  97.    endif
  98.  
  99. elseif (match("${cardVendor}", "NVidia"))
  100.    if (match("${cardName}", "NV 1") or match("${cardName}", "NV 2") or match("${cardName}", "*Riva*") or match("${cardName}", "*TNT*"))
  101.       setb useSoftwareRasterizer true
  102.    endif
  103.  
  104. elseif (match("${cardVendor}", "Intel"))
  105.    if (match("${cardName}", "*810*") or match("${cardName}", "*815*") or match("${cardName}", "*740*") or match("${cardName}", "*752*"))
  106.       setb useSoftwareRasterizer true
  107.    endif
  108.  
  109. else
  110.    # unsupported/unknown vendor
  111.    setb useSoftwareRasterizer true
  112.  
  113. endif
  114.  
  115. if ($useSoftwareRasterizer)
  116.    log $logGroup $logLevelWarning "Unsupported video card.  Forcing software rendering on this device"
  117. else
  118.    log $logGroup $logLevelInfo "Supported video card."
  119. endif
  120.  
  121. if (not $useSoftwareRasterizer)
  122.    # failed to obtain device texture memory size, force to 32MB
  123.    if ($textureMemory = 0)
  124.       seti textureMemory       32
  125.       setb textureMemorySizeOK false
  126.    endif
  127.  
  128.    if ($textureMemory < 28)
  129.       log $logGroup $logLevelWarning "Insufficient video memory.  Forcing software rendering on this device"
  130.  
  131.       # require a card with at least 32MB
  132.       setb useSoftwareRasterizer true
  133.    endif
  134. endif
  135.  
  136. if ($useSoftwareRasterizer)
  137.    # ignore texture memory reported by gfx device, this is not hardware texture memory
  138.    seti textureMemory 32
  139. endif
  140.  
  141. if (not $useSoftwareRasterizer)
  142.    log $logGroup $logLevelInfo "Hardware rendering is enabled"
  143. endif
  144.  
  145.  
  146.  
  147. #############################################################################
  148. #
  149. # Apply gfx device specific workarounds
  150. #
  151. # Available device props:
  152. #  forceSoftwareVP
  153. #  forceSoftwareDevice
  154. #  queriesOK
  155. #  windowedModeFormatConversionOK
  156. #  enumerateMultisampleLevels
  157. #  skipValidateDevice
  158. #  enableDriverMemoryManager
  159. #  softwareDeviceLocalVideoMemorySize
  160. #  deviceLocalVideoMemorySizeDefault
  161. #  disableVSyncSupport
  162. #  substituteFlipForDiscardSwapEffect
  163. #  minTextureDimensionForBalance
  164. #
  165. # Additional props:
  166. #  vs2LoopsFunctional
  167.  
  168. setb textureMemorySizeOK        true
  169. setb supportsTurboRect          true
  170. setb supportsSpecialEventCamera true
  171. setb forceLowSettings           false
  172. setb forceLowResolution         false
  173.  
  174. boolProp useRenderTextures      false
  175. uintProp antialiasingSupport    1
  176.  
  177. if (not $useSoftwareRasterizer)
  178.  
  179.    # never trust the driver to manage its own memory
  180.    boolProp enableDriverMemoryManager  false
  181.  
  182.    boolProp vs2LoopsFunctional         false
  183.    boolProp presentWorkaround          false
  184.    boolProp enumerateMultisampleLevels true
  185.  
  186.    # not enough texture memory for antialiasing
  187.    if ($textureMemory < 127)
  188.       boolProp enumerateMultisampleLevels false
  189.    endif
  190.  
  191.    if (match("${cardVendor}", "NVIDIA"))
  192.       boolProp vs2LoopsFunctional true
  193.  
  194.       # nvidia drivers handle offscreen aa
  195.       uintProp antialiasingSupport 3
  196.  
  197.       if (match("${cardName}", "*GeForce2*Integrated*") or match("${cardName}", "*GeForce?2*Integrated*") or match("${cardName}", "*GeForce4*Integrated*") or match("${cardName}", "*GeForce?4*Integrated*"))
  198.          boolProp causticsEnabled            false
  199.          boolProp enumerateMultisampleLevels false
  200.  
  201.          setb forceLowSettings   true
  202.          setb forceLowResolution true
  203.       endif
  204.  
  205.       # disable shaders by default for NV3x generation, only enable for high end cards
  206.       if ($maxVertexProgramVersionHWMajor = 2)
  207.          boolProp useShaders false
  208.  
  209.          if (match("${cardName}", "GeForceFX*") or match("${cardName}", "*GeForce?FX*"))
  210.             if (match("${cardName}", "*57?0*") or match("${cardName}", "*58?0*") or match("${cardName}", "*59?0*"))
  211.                boolProp useShaders true
  212.  
  213.                log $logGroup $logLevelInfo "Enabling shaders for high-end NV3x"
  214.             endif
  215.             if (match("${cardName}", "*NV35*") or match("${cardName}", "*NV36*") or match("${cardName}", "*NV38*") or match("${cardName}", "*NV39*"))
  216.                boolProp useShaders true
  217.  
  218.                log $logGroup $logLevelInfo "Enabling shaders for high-end NV3x"
  219.             endif
  220.          endif
  221.  
  222.          if (match("${cardName}", "QuadroFX*") or match("${cardName}", "*Quadro?FX*"))
  223.             if (match("${cardName}", "*3000*") or match("${cardName}", "*1100*"))
  224.                boolProp useShaders true
  225.  
  226.                log $logGroup $logLevelInfo "Enabling shaders for high-end NV3x Quadro"
  227.             endif
  228.          endif
  229.  
  230.          # caps read vs 3.0, but dx9b is returning vs 2.0, once 9c is used this fix can be removed
  231.          if (match("${cardName}", "*GeForce*"))
  232.             if (match("${cardName}", "*68?0*"))
  233.                boolProp useShaders true
  234.  
  235.                log $logGroup $logLevelInfo "Enabling shaders for high-end NV40 Parts on Dx9b"
  236.             endif
  237.          endif
  238.       endif
  239.  
  240.       if ($driverBuild <= 5216)
  241.          # turn off antialiasing to avoid BSODs on older drivers
  242.          boolProp enumerateMultisampleLevels false
  243.  
  244.          log $logGroup $logLevelInfo "Driver is too old. Disabling AA on this device."
  245.       endif
  246.  
  247.       if (($driverBuild < 5212) and ($maxPixelProgramVersionMajor < 2))
  248.          # turn off cinematics on older drivers with DX8 cards to avoid failed copies
  249.          setb supportsSpecialEventCamera false
  250.  
  251.          log $logGroup $logLevelInfo "Driver is too old. Disabling SpecialEventCameras on this device."
  252.       endif
  253.  
  254.       if ($maxVertexProgramVersionHWMajor = 0)
  255.          boolProp skipValidateDevice true
  256.  
  257.          log $logGroup $logLevelInfo "Enabling D3DERR_CONFLICTINGRENDERSTATE validation workaround"
  258.       endif
  259.  
  260.       if ($driverBuild > 5216 and $driverBuild < 6176)
  261.          # force SWVP on 2D vertex shader to work around UI and shadow rendering
  262.          # bugs; known to occur on GeForce4, Quadro4, and FX5200 on driver versions
  263.          # 56.56 and 56.72; known not to occur with FX5800+ or with 52.16 or
  264.          # 61.76 drivers.
  265.          boolProp draw2DForceSWVP true
  266.       endif
  267.  
  268.    elseif (match("${cardVendor}", "ATI"))
  269.       # loops are not working as of 6458. TODO: need a fixed driver build num
  270.       #if ($driverBuild > 6458)
  271.       #   boolProp vs2LoopsFunctional true
  272.       #endif
  273.  
  274.       # workaround for forced multisample crash as of 6458, TODO: need a fixed driver build num
  275.       #if ($driverBuild <= 6458)
  276.          boolProp useRenderTextures true
  277.       #endif
  278.  
  279.       # avoid a race condition with color copies and ui
  280.       boolProp presentWorkaround  true
  281.  
  282.       if (match("${cardName}", "*Radeon?VE*") or match("${cardName}", "*7?00*") or match("${cardName}", "*R100*") or match("${cardName}", "*IGP 3?0*"))
  283.          log $logGroup $logLevelInfo "Forcing turbo rects off"
  284.          setb supportsTurboRect   false
  285.  
  286.          boolProp simpleTerrain              true
  287.          boolProp causticsEnabled            false
  288.          boolProp enumerateMultisampleLevels false
  289.  
  290.          setb forceLowSettings    true
  291.  
  292.          if (match("${cardName}", "*Radeon?VE*") or $driverBuild < 6414)
  293.             log $logGroup $logLevelInfo "Forcing swvp"
  294.             boolProp forceSoftwareVP true
  295.          endif
  296.       endif
  297.  
  298.       if ($maxVertexProgramVersionHWMajor < 2)
  299.          # Radeon 8500 and greater have problems switching between FF and VS?
  300.          log $logGroup $logLevelInfo "Forcing shaders of for ATI DX8"
  301.  
  302.          boolProp useShaders false
  303.       endif
  304.  
  305.       # the new radeons do not support shadows properly, remove this if driver fix
  306.       if (match("${cardName}", "*X800*") or match("${cardName}", "*R420*"))
  307.          setb supportsTurboRect false
  308.  
  309.          log $logGroup $logLevelInfo "Forcing turbo rects off"
  310.       endif
  311.  
  312.    elseif (match("${cardVendor}", "Intel"))
  313.       boolProp simpleTerrain              true
  314.       boolProp enumerateMultisampleLevels false
  315.       boolProp disableVSyncSupport        true    # work around flickering UI
  316.  
  317.       # the Intel minspec driver doesn't misreport available texture memory, so it's not
  318.       # necessary to adjust the texture memory estimate it returns. This may also fix
  319.       # a Windows "device failure" message that occurs sometimes on this device.
  320.       boolProp disableTexMemEstimateAdjustment true
  321.  
  322.       # assuming Intel parts are UMA, drop the texture memory to 32 if not much system memory
  323.       if ($memory <= $memoryLevelLow)
  324.          if ($textureMemory > 32)
  325.             seti textureMemory 32
  326.          endif
  327.       endif
  328.  
  329.       if (match("${cardName}", "*845*") or match("${cardName}", "*865*") or match("${cardName}", "*830*") or match("${cardName}", "*855*"))
  330.          boolProp causticsEnabled false
  331.  
  332.          setb forceLowSettings   true
  333.          setb forceLowResolution true
  334.       endif
  335.    endif
  336.  
  337.    intProp deviceLocalVideoMemorySizeDefault ($textureMemory * 1024 * 1024)
  338.  
  339. else
  340.    setb forceLowSettings   true
  341.    setb forceLowResolution true
  342.  
  343.    # force sw, swvp, and no aa
  344.    boolProp forceSoftwareDevice        true
  345.    boolProp forceSoftwareVP            true
  346.    boolProp enumerateMultisampleLevels false
  347.    boolProp simpleTerrain              true
  348.    boolProp causticsEnabled            false
  349.  
  350.    intProp softwareDeviceLocalVideoMemorySize ($textureMemory * 1024 * 1024)
  351.  
  352. endif
  353.  
  354. # since we don't do bumpmapping on less ps2.0-capable hardware, eliminate tangents
  355. # from the vertex data
  356. # also, the presence of per-vertex tangents in the vertex data stream causes
  357. # "exploded" polygons on the Radeon 9000, even if the data is ignored by the shader
  358. if ($maxPixelProgramVersionMajor < 2)
  359.    boolProp skipTangentsInVertexData true
  360. endif
  361.  
  362.  
  363. #############################################################################
  364. #
  365. # Print system info
  366. #
  367.  
  368. if ($deviceNumber = 0)
  369. logSystemInfo "=== Application info ==="
  370. logSystemInfo "Name:            ${appName}"
  371. logSystemInfo "Version:         ${version}"
  372. logSystemInfo "Build:           ${buildType}"
  373.  
  374. logSystemInfo "=== Machine info ==="
  375. logSystemInfo "OS version:      ${osVersion}"
  376. logSystemInfo "CPU:             ${cpuSpeed}Mhz, Name:${CPU}, FPU:${FPU}, MMX:${MMX}"
  377. logSystemInfo "Memory:          ${memory}MB"
  378. logSystemInfo "Free memory:     ${freeMemory}MB"
  379. logSystemInfo "User:            ${userName}"
  380. logSystemInfo "Computer:        ${computerName}"
  381.  
  382. logSystemInfo "=== Sound device info ==="
  383. logSystemInfo "Name:            ${soundCardName}"
  384. logSystemInfo "Driver:          ${soundDriverName}"
  385. endif
  386.  
  387. logSystemInfo "=== Graphics device info ==="
  388. logSystemInfo "Number:          ${deviceNumber}"
  389. logSystemInfo "Name (driver):   ${cardNameText}"
  390. if ($isCardFound)
  391. logSystemInfo "Name (database): ${cardName}"
  392. else
  393. logSystemInfo "Name (database): ${cardName} <<NOT FOUND IN DATABASE!>>"
  394. endif
  395. logSystemInfo "Vendor:          ${cardVendor}"
  396. logSystemInfo "Chipset:         ${cardChipset}"
  397. logSystemInfo "Driver:          ${driverName}, Version: ${driverVersion}"
  398. logSystemInfo "Driver version:  ${driverBuild}"
  399. logSystemInfo "Monitor:         ${monitorName}"
  400. logSystemInfo "Monitor aspect:  ${monitorAspect}, ${monitorAspectString}"
  401. logSystemInfo "Screen mode:     ${screenWidth}x${screenHeight}x${screenBPP}BPP,${screenRefresh}Hz"
  402. if ($textureMemorySizeOK)
  403. logSystemInfo "Texture memory:  ${textureMemory}MB"
  404. else
  405. logSystemInfo "Texture memory:  ${textureMemory}MB <<OVERRIDE>>"
  406. endif
  407. logSystemInfo "HW T&L:          Fixed function:${fixedFunctionHWTnL} Programmable:${maxVertexProgramVersionHWMajor}.${maxVertexProgramVersionHWMinor}"
  408. logSystemInfo "Pixel program:   ${maxPixelProgramVersionMajor}.${maxPixelProgramVersionMinor}"
  409. logSystemInfo "Texture stages:  ${textureStages}"
  410.  
  411.  
  412.  
  413. #############################################################################
  414. #
  415. # UI Options
  416.  
  417. log $logGroup $logLevelDebug "Begin parsing option definitions"
  418.  
  419. # Note: CASIE uses different property values for MaterialDetail then Sims2 does.
  420. # CASIE would prefer to maintain full texture resolution, but disable bumps
  421. # only on cards with low video memory.
  422. option MaterialDetail
  423.    setting $Low
  424.       boolProp bumpMapping false
  425.       intProp  imageDataSizeReductionOnLoad 1
  426.  
  427.    setting $Medium
  428.       boolProp bumpMapping false
  429.       intProp  imageDataSizeReductionOnLoad 0
  430.  
  431.    setting $High
  432.       boolProp bumpMapping true
  433.       intProp  imageDataSizeReductionOnLoad 0
  434. end
  435.  
  436.  
  437. option ObjectDetail
  438.    setting $Medium
  439.       boolProp reduceBoneWeights true
  440.       boolProp useLODs           true
  441.       intProp  lodOverride       35
  442.  
  443.    setting $High
  444.       boolProp reduceBoneWeights false
  445.       boolProp useLODs           false
  446.       intProp  lodOverride       0
  447. end
  448.  
  449. option ObjectHiding
  450.    setting $Off
  451.       intProp renderInsideVisibleObjects 0
  452.  
  453.    setting $On
  454.       intProp renderInsideVisibleObjects 1
  455. end
  456.  
  457. option Shadows
  458.    setting $Low
  459.       boolProp simShadows       false
  460.       boolProp objectShadows    false
  461.       boolProp guob             false
  462.       boolProp heightMapShadows false
  463.  
  464.    setting $Medium
  465.       boolProp simShadows       false
  466.       boolProp objectShadows    false
  467.       boolProp guob             true
  468.       boolProp heightMapShadows true
  469.  
  470.    setting $High
  471.       boolProp simShadows       true
  472.       boolProp objectShadows    true
  473.       boolProp guob             true
  474.       boolProp heightMapShadows true
  475. end
  476.  
  477.  
  478. option OpaqueUI
  479.     setting $Off
  480.        boolProp renderOpaqueUI false
  481.  
  482.     setting $On
  483.        boolProp renderOpaqueUI true
  484. end
  485.  
  486.  
  487. option Reflection
  488.    setting $Off
  489.       boolProp    reflectionWithExtraViewer  false
  490.       boolProp    nhoodWaterReflection       false
  491.  
  492.    setting $On
  493.       boolProp    reflectionWithExtraViewer  true
  494.       boolProp    nhoodWaterReflection       true
  495. end
  496.  
  497.  
  498. option EffectsQuality
  499.    setting $Low
  500.       boolProp  useEffects            true
  501.       floatProp particleDensity       1
  502.       floatProp particleScale         1
  503.       intProp   maxParticlesTarget    2000
  504.       intProp   particleLODOffset     0    # subtracted from the zoom.
  505.       intProp   effectPriorityLevel   1
  506.  
  507.    setting $Medium
  508.       boolProp  useEffects            true
  509.       floatProp particleDensity       1
  510.       floatProp particleScale         1
  511.       intProp   maxParticlesTarget    5000
  512.       intProp   particleLODOffset     0    # subtracted from the zoom.
  513.       intProp   effectPriorityLevel   2
  514.  
  515.    setting $High
  516.       boolProp  useEffects            true
  517.       floatProp particleDensity       1
  518.       floatProp particleScale         1
  519.       intProp   maxParticlesTarget    10000
  520.       intProp   particleLODOffset     0    # subtracted from the zoom.
  521.       intProp   effectPriorityLevel   3
  522. end
  523.  
  524.  
  525. option LightingQuality
  526.    setting $Low
  527.       boolProp lightingEnabled           true
  528.       boolProp portalLighting            false
  529.       boolProp floorAndWallNormalMapping false
  530.       boolProp specHighlights            false
  531.  
  532.    setting $Medium
  533.       boolProp lightingEnabled           true
  534.       boolProp portalLighting            true
  535.       boolProp floorAndWallNormalMapping false
  536.       boolProp specHighlights            true
  537.  
  538.    setting $High
  539.       boolProp lightingEnabled           true
  540.       boolProp portalLighting            true
  541.       boolProp floorAndWallNormalMapping true
  542.       boolProp specHighlights            true
  543. end
  544.  
  545.  
  546. option SoundQuality
  547.    setting $Low
  548.       intProp AudioPerformance 0
  549.  
  550.    setting $Medium
  551.       intProp AudioPerformance 1
  552.  
  553.    setting $High
  554.       intProp AudioPerformance 2
  555. end
  556.  
  557.  
  558. #
  559. # Options without ui access.
  560. #
  561. option DirtyRect
  562.    setting $High
  563.       # no dirty rects
  564.       intProp dynamicRenderStrategy 0
  565.  
  566.    setting $Medium
  567.       # 4 buffer mode
  568.       intProp dynamicRenderStrategy 2
  569.  
  570.    setting $Low
  571.       # 2 buffer mode
  572.       intProp dynamicRenderStrategy 1
  573. end
  574.  
  575.  
  576. option FullscreenFadeEffect
  577.    setting $Off
  578.       boolProp enableSnapshot false
  579.  
  580.    setting $On
  581.       boolProp enableSnapshot true
  582. end
  583.  
  584.  
  585. option Turbo
  586.    setting $High
  587.       boolProp useTurboRect true
  588.  
  589.    setting $Medium
  590.       boolProp useTurboRect true
  591.  
  592.    setting $Low
  593.       boolProp useTurboRect false
  594.  
  595. end
  596.  
  597.  
  598. option SimulatorControls
  599.    setting $High
  600.       intProp maxNumOfVisitingSims   8
  601.  
  602.    setting $Medium
  603.       intProp maxNumOfVisitingSims   4
  604.  
  605.    setting $Low
  606.       intProp maxNumOfVisitingSims   2
  607. end
  608.  
  609.  
  610. option LightingOptimizations
  611.    setting $High
  612.       boolProp optimizedDiffusion        true
  613.       boolProp incrementalLighting       true
  614.       boolProp lerpLights                true
  615.       boolProp useDirtyTiles             true
  616. end
  617.  
  618.  
  619. option AnimationSamplingLevel
  620.    setting $Low
  621.       # sample nearest animation frame
  622.       boolProp animationFrameSampling true
  623.  
  624.    setting $Medium
  625.       # sample nearest two animation frames and slerp
  626.       boolProp animationFrameSampling false
  627. end
  628.  
  629.  
  630. option LivePIP
  631.    setting $Off
  632.       boolProp livePIP        false
  633.       boolProp livePIPDefault false
  634.  
  635.    setting $On
  636.       boolProp livePIP        true
  637.       boolProp livePIPDefault true
  638. end
  639.  
  640.  
  641. option SpecialEventCamera
  642.    setting $Off
  643.       boolProp chooseCameraSpecialEventEnabled false
  644.       boolProp CameraSpecialEventEnabled       false
  645.  
  646.    setting $On
  647.       boolProp chooseCameraSpecialEventEnabled true
  648.       boolProp CameraSpecialEventEnabled       true
  649. end
  650.  
  651.  
  652. option ScreenModeResolution
  653.    setting $Low
  654.       uintProp maxResWidth      800
  655.       uintProp maxResHeight     600
  656.       uintProp defaultResWidth  800
  657.       uintProp defaultResHeight 600
  658.  
  659.    setting $Medium
  660.       uintProp maxResWidth      1280
  661.       uintProp maxResHeight     1024
  662.       uintProp defaultResWidth  1024
  663.       uintProp defaultResHeight 768
  664.  
  665.    setting $High
  666.       uintProp maxResWidth      1600
  667.       uintProp maxResHeight     1200
  668.       uintProp defaultResWidth  1024
  669.       uintProp defaultResHeight 768
  670. end
  671.  
  672. log $logGroup $logLevelDebug "Finished parsing option definitions"
  673.  
  674.  
  675. #############################################################################
  676. #
  677. # Hardware Rendering
  678. #
  679.  
  680. # This cannot be defined as a local variable, the if clause is still executed when
  681. #   sw render path is taken and an exception generated that fails the parsing.  Be
  682. #   careful with the use of local variables.
  683. seti settingsLevel $Low
  684.  
  685. if (not $useSoftwareRasterizer)
  686.    setOption LightingOptimizations $High
  687.  
  688.  
  689.    # set a base level of options based on the card rating
  690.    if (($memory >= $memoryLevelHigh) and ($cpuSpeed >= $cpuLevelHigh) and ($maxVertexProgramVersionHWMajor >= 1) and not $forceLowSettings)
  691.       log $logGroup $logLevelInfo "Selecting High base level"
  692.       seti settingsLevel $High
  693.  
  694.       setOption DirtyRect             $Medium
  695.       setOption Turbo                 $Medium
  696.       setOption OpaqueUI              $Off
  697.       setOption LivePIP               $On
  698.  
  699.       setOption Reflection            $On
  700.       setOption EffectsQuality        $High
  701.       setOption LightingQuality       $High
  702.       setOption Shadows               $High
  703.       setOption MaterialDetail        $High
  704.       setOption ObjectDetail          $High
  705.       setOption ObjectHiding          $Off
  706.  
  707.    elseif (($memory >= $memoryLevelMedium) and ($cpuSpeed >= $cpuLevelMedium) and ($maxVertexProgramVersionHWMajor >= 1) and not $forceLowSettings)
  708.       log $logGroup $logLevelInfo "Selecting Medium base level"
  709.       seti settingsLevel $Medium
  710.  
  711.       setOption DirtyRect             $Medium
  712.       setOption Turbo                 $Medium
  713.       setOption OpaqueUI              $Off
  714.       setOption LivePIP               $On
  715.  
  716.       setOption Reflection            $Off
  717.       setOption EffectsQuality        $Medium
  718.       setOption LightingQuality       $Medium
  719.       setOption Shadows               $Medium
  720.       setOption MaterialDetail        $Medium
  721.       setOption ObjectDetail          $High
  722.       setOption ObjectHiding          $On
  723.  
  724.    else
  725.       log $logGroup $logLevelInfo "Selecting Low base level"
  726.       seti settingsLevel $Low
  727.  
  728.       setOption DirtyRect             $Medium
  729.       setOption OpaqueUI              $Off
  730.       setOption LivePIP               $Off
  731.  
  732.       setOption Reflection            $Off
  733.       setOption EffectsQuality        $Low
  734.       setOption LightingQuality       $Low
  735.       setOption Shadows               $Low
  736.       setOption MaterialDetail        $Low
  737.       setOption ObjectDetail          $Medium
  738.       setOption ObjectHiding          $On
  739.  
  740.    endif
  741.  
  742.    # adjust simulator based on cpu speed
  743.    # adjust the sound quality based on cpu speed (this may be overridden below for low-end systems)
  744.    # adjust animation sampling based on cpu speed
  745.    if ($cpuSpeed >= $cpuLevelHigh and not $forceLowSettings)
  746.       setOption SimulatorControls      $High
  747.       setOption SoundQuality           $High
  748.       setOption AnimationSamplingLevel $Medium
  749.    elseif ($cpuSpeed >= $cpuLevelMedium and not $forceLowSettings)
  750.       setOption SimulatorControls      $Medium
  751.       setOption SoundQuality           $Medium
  752.       setOption AnimationSamplingLevel $Medium
  753.    else
  754.       setOption SimulatorControls      $Low
  755.       setOption SoundQuality           $Low
  756.       setOption AnimationSamplingLevel $Low
  757.    endif
  758.  
  759.    if ($settingsLevel = $Low)
  760.       setOption SoundQuality     $Low
  761.    endif
  762.  
  763.    # turn off fullscreen fade
  764.    setOption FullscreenFadeEffect    $Off
  765.    if ($textureMemory >= 64)
  766.       setOption FullscreenFadeEffect $On
  767.    endif
  768.  
  769.    # screen res defaults
  770.    if (($maxVertexProgramVersionHWMajor >= 1) and ($textureMemory >= 128) and not $forceLowResolution)
  771.       setOption ScreenModeResolution $High
  772.    elseif ($textureMemory >= 64 and not $forceLowResolution)
  773.       setOption ScreenModeResolution $Medium
  774.    else
  775.       setOption ScreenModeResolution $Low
  776.    endif
  777.  
  778.    # special event cameras for cinematics
  779.    if (($maxPixelProgramVersionMajor >= 1) and ($supportsSpecialEventCamera))
  780.       setOption SpecialEventCamera $On
  781.    else
  782.       setOption SpecialEventCamera $Off
  783.    endif
  784.  
  785.    # set turbo mode
  786.    if ($supportsTurboRect)
  787.       setOption Turbo $Medium
  788.    else
  789.       setOption Turbo $Low
  790.    endif
  791. endif
  792.  
  793.  
  794. #############################################################################
  795. #
  796. # Software rendering
  797. #
  798.  
  799. # set the options for the software rasterizer
  800. if ($useSoftwareRasterizer)
  801.    setOption LightingOptimizations $High
  802.  
  803.    setOption DirtyRect             $Medium
  804.    setOption Turbo                 $Medium
  805.    setOption OpaqueUI              $Off
  806.    setOption LivePIP               $Off
  807.    setOption SpecialEventCamera    $Off
  808.  
  809.    setOption Reflection            $Off
  810.    setOption EffectsQuality        $Low
  811.    setOption LightingQuality       $Low
  812.    setOption Shadows               $Low
  813.    setOption MaterialDetail        $Low
  814.    setOption ObjectDetail          $Medium
  815.    setOption ObjectHiding          $On
  816.  
  817.    # adjust simulator based on cpu speed
  818.    if ($cpuSpeed >= $cpuLevelHigh)
  819.       setOption SimulatorControls  $Medium # one lower than hw
  820.    else
  821.       setOption SimulatorControls  $Low
  822.    endif
  823.  
  824.    setOption SoundQuality           $Low
  825.    setOption FullscreenFadeEffect   $Off
  826.    setOption AnimationSamplingLevel $Low
  827.    setOption ScreenModeResolution   $Low
  828. endif
  829.  
  830.  
  831. # Casie overrides all of the above settings
  832. setOption MaterialDetail         $High
  833. setOption ObjectDetail           $High
  834. setOption ObjectHiding           $Off
  835. setOption Shadows                $High
  836. setOption OpaqueUI               $Off
  837. setOption Reflection             $Off
  838. setOption EffectsQuality         $Low
  839. setOption LightingQuality        $Medium
  840. setOption SoundQuality           $Medium
  841. setOption DirtyRect              $High
  842. setOption FullscreenFadeEffect   $Off
  843. setOption Turbo                  $Low
  844. setOption LightingOptimizations  $High
  845. setOption AnimationSamplingLevel $Medium
  846. setOption SpecialEventCamera     $Off
  847.  
  848.  
  849. # Casie disables bumpmapping when accelerator doesn't have enough memory.
  850. if ($textureMemory <= 32)
  851.    setOption MaterialDetail     $Medium
  852. endif
  853. # When running Casie on Pixomatic, drop a mip level and disable bumps.
  854. if ($useSoftwareRasterizer)
  855.    setOption MaterialDetail     $Low
  856. endif
  857.  
  858.  
  859. #############################################################################
  860. # tell the caller that we completely finished parsing the script
  861. intProp configParserErrorCode 0
  862.  
  863. log $logGroup $logLevelInfo "Finished Config File"
  864.